import numpy as np
from matplotlib import pyplot as plt
from skimage import data
#拉普拉斯模板
'''中心为8的模板'''
window8 = np.array([[-1,-1,-1],[-1,8,-1],[-1,-1,-1]])
'''中心为4的模板'''
window4 = np.array([[-1,-1,-1],[-1,4,-1],[-1,-1,-1]])
#图像空间增强函数
def cor2l(img , window):
    m = window.shape[0]
    n = window.shape[1]
    #边界通过0灰度值填充扩展
    img1 =np.zeros((img.shape[0]+m-1,img.shape[1]+n-1))
    img1[(m-1)//2 : (img.shape[0]+(m-1)//2),(n-1)//2:(img.shape[1]+(n-1)//2)] = img#//表示正式出发，返回不大于结果的一个最大整数
    img2 = np.zeros(img.shape)
    for i in range(img2.shape[0]):
        for j in range(img2.shape[1]):
            temp = img1[i:i+m,j:j+n]
            img2[i,j] =  np.sum(np.multiply(temp,window))#multiply数组和矩阵对应位置相乘，输出与相乘数组/矩阵的大小一致
    return img2
#原始图
img = data.camera()
'''img_lp8与img_lp4分别为中心模板为8和4的拉普拉斯变换后的结果'''
img_lp8 = cor2l(img,window8)
img_lp4 = cor2l(img,window4)
img_lp8_af = 255*(img_lp8 - img_lp8.min())/(img_lp8.max()-img_lp8.min())
img_lp4_af = 255*(img_lp4 - img_lp4.min())/(img_lp4.max()-img_lp4.min())
#绘图
print('中心为8')
plt.figure()
plt.axis('off')
plt.imshow(img_lp8,cmap='gray')
print('---------------------')
print('中心为4')
plt.figure()
plt.axis('off')
plt.imshow(img_lp4,cmap='gray')